<?php

namespace app\common\model\Post;

use think\Model;

// 软删除的模型
use traits\model\SoftDelete;

/**
 * 帖子模型
 */
class Post extends Model
{
    //继承软删除
    use SoftDelete;

    //模型对应的是哪张表
    protected $table = "pre_post";

    //指定一个自动设置的时间字段
    //开启自动写入
    protected $autoWriteTimestamp = true; 

    //设置字段的名字
    protected $createTime = "createtime"; //插入的时候设置的字段名

    //禁止 写入的时间字段
    protected $updateTime = false;

    // 软删除的字段
    protected $deleteTime = 'deletetime';


    //利用获取器来做访问次数
    public function getVisitTextAttr($value, $data)
    {
        //字符串转化为数组
        $visit = explode(',', $data['visit']);
        $visit = array_filter($visit);
        return count($visit);
    }

    //利用获取器来做访问次数
    public function getStateTextAttr($value, $data)
    {
        //字符串转化为数组
        $statelist = [0 => '无附加功能', 1 => '置顶', 2 => '精华', 3 => '热门'];
        
        return $statelist[$data['state']];
    }

    //利用获取器来做评论总数
    public function getCommentAttr($value, $data)
    {
        //加载模型
        $count = model('Post.Comment')->where(['postid' => $data['id']])->count();
        return $count;
    }

     //利用获取器来做评论总数
    //  public function getCreatetimeAttr($value, $data)
    //  {
    //      //加载模型
    //      $data['create_time'] = $data['createtime'];
        
    //      return $data['create_time'];
    //  }
 


    //帖子的附加功能
    public function state()
    {
        return [
            1 => '置顶', 2 => '精华', 3 => '热门'
        ];
    }

    //查询帖子所对应分类
    public function cate()
    {
        // belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义'],'join类型');
        //参数1：关联的模型
        //参数2：用户表的外键的字段
        //参数3：关联表的主键
        //参数4：模型别名
        //参数5：链接方式 left
        // setEagerlyType(1) IN查询
        // setEagerlyType(0) JOIN查询

        return $this->belongsTo('app\common\model\Post\Cate', 'cateid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    //查询帖子所对应用户
    public function user()
    {
        return $this->belongsTo('app\common\model\User\User', 'userid', 'id', [], 'LEFT')->setEagerlyType(0);
    }
}
